package 反射机制;

public class Test {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        Class a=null;
        //如何获取Class的对象，默认情况下无论何种方式获得的描述同一个类的元类对象，都是同一个对象
        Class c1=Student.class;//获取了描述Student类的元类对象
        Class c2 = new Student().getClass();//通过对象获得对象所属类的元类对象
        Class c3 =Class.forName("反射机制.Student");//通过类全限定名的字符串获得类元类对象
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3==c1);

        //元类对象可以干什么
        //1.通过元类对象可以获得所描述类的实际对象
        Object obj = c1.newInstance();
        System.out.println(obj);


        //2.通过元类对象可以获得所描述类的全限定名称和简称
        String name = c1.getName();//全限定类目
        System.out.println(name);
        String simpleName = c1.getSimpleName();//简称
        System.out.println(simpleName);


    }
}
